iT邦幫忙

2022 iThome 鐵人賽

DAY 12
0
自我挑戰組

用Python學習網路爬蟲30天系列 第 12

[Day12] 資料儲存成檔案

  • 分享至 

  • xImage
  •  

將取得的資料儲存成檔案

從HTML網頁擷取出需要的資料後,可以將整理好的資料儲存成檔案。常用的檔案格式有兩種,分別為CSV和JSON檔。

  • CSV檔案:
    其檔案內容是使用純文字來表示表格資料,是一種文字檔案。表示法為每一行是表格的一列,每一欄位用”,”逗號來分隔。
    範例.

    Math | English | Science
    ------------- | -------------
    90 | 75 | 80
    35 | 85 | 60

    CSV格式:  Math, English, Science
          90, 75, 80
          35, 85, 60

  • JSON檔案:
    是一種類似XML的資料交換格式,只有文字內容。其表示法為大括號定義成對的鍵和值,使用” : ”分號分隔,資料間使用”,”逗號分隔,定義物件使用” { } ”大括號,定義正列使用” [ ] ”方括號表示。
    範例.
    {
     “teacher” : “林老師”,
     “students”: [
      { “name” : ”陳方方”, “student_id” : “409123456” },
      { “name” : ”許正正”, “student_id” : “409134567” },
      { “name” : ”蔡圓圓”, “student_id” : “409145678” },
     ]
    }

實作練習

從W3Shool網站取出表格資料寫入CSV檔案
https://ithelp.ithome.com.tw/upload/images/20220926/20152180TL4vRQvXSE.png

import requests
from bs4 import BeautifulSoup
import csv

url = "https://www.w3schools.com/tags/ref_standardattributes.asp"
csvfile = "HtmlAttribute.csv"
r = requests.get(url)
r.encoding = "utf8"
soup = BeautifulSoup(r.text, "lxml")
tag_table = soup.find(class_="ws-table-all notranslate")  # 找到<table>
rows = tag_table.findAll("tr")   # 找出所有<tr>
# 開啟CSV檔案寫入截取的資料
with open(csvfile, 'w+', newline='', encoding="utf-8") as fp:
    writer = csv.writer(fp)
    for row in rows:
        rowList = []
        for cell in row.findAll(["td", "th"]):
            rowList.append(cell.get_text().replace("\n", "").replace("\r", ""))
        writer.writerow(rowList)

https://ithelp.ithome.com.tw/upload/images/20220926/201521800KDDJUCq3j.png


上一篇
[Day11] 走訪HTML網頁
下一篇
[Day13] Beautiful Soup總複習
系列文
用Python學習網路爬蟲30天30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言